package jmine.tec.di.wrapper;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

import jmine.tec.annotations.Unmodifiable;

/**
 * Faz o wrapping em uma lista
 * 
 * @author MarceloT
 */
@Unmodifiable
class ListWrapper extends AbstractCollectionWrapper implements Wrapper {
    private static final long serialVersionUID = -6699481018627440282L;

    /**
     * Wrapp varios valores
     * 
     * @param propertyKeys os nomes das propriedades
     * @param propertyValues os valores das propriedades
     * @param valueType o tipo de valor
     * @return Object
     */
    public Object wrap(Object[] propertyKeys, Object[] propertyValues, Class<?> valueType) {
        return new ArrayList<Object>(Arrays.asList(propertyValues));
    }

    /**
     * Verifica se o tipo deste wrapper é compativel com o tipo de container passado
     * 
     * @param containerType Class
     * @return boolean
     */

    public boolean isTypeCompatible(Class<?> containerType) {
        return Collection.class.isAssignableFrom(containerType);
    }

}
